The development and updating of software programs typically involves multiple iterations of a number of sections of code. As a program develops and undergoes changes, sections of code are often modified by several developers multiple times. A program called the source control system maintains a repository, where the most current versions of the program are stored. A developer may “check out” a copy, called a working copy, and make alterations to the code. The developer must then merge the working copy with the repository copy in order to update the software. Additionally, multiple developers may be working on the same file at the same time. This leads to multiple versions of a given file, each with different changes which may be incompatible with other developers' changes.
As the software changes, the developers must ensure that their modifications to the program have not resulted in the introduction of new software bugs, called regressions, to previously functioning software. Because of the high demands of consumers, minimizing regressions through multiple iterations of a software program can be an expensive part of software development.